/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package src.j2ee.compumake.dao;

import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;
import src.j2ee.compumake.dominio.Zona;

/************************************************************************
 **                                                                    **
 ** Nombre: DAOZonas.java                                              **
 ** Version: v1.0.0                                                    **
 ** Autor: amado.cante                                                 **
 ** Creado: 20/04/2013                                                 **
 ** Modificado:                                                        **
 ** Diagrama:                                                          **
 ** Caso de uso:                                                       **
 **                                                                    **
 ***********************************************************************/
public class DAOZonas {
    private static final String TABLA_ZONAS = "Zonas";
    private static final String ID_ZONA = "idZona";
    private static final String NOMBRE_ZONA = "nombreZona";
    private static final String DESCRIPCION = "descripcion";
    private Connection conexion;
    private AccesoBaseDatos acceso = new AccesoBaseDatos();

    public DAOZonas() {
        this.conexion = acceso.abrirConexion();
    }
    
    public Zona buscarZona(int zona) {
        try{
            Statement sentencia = conexion.createStatement();
            sentencia = this.acceso.crearSentenciaBD(conexion);
            String query = "SELECT * FROM "+TABLA_ZONAS+" WHERE "+ID_ZONA+"='"+zona+"';";
            ResultSet resultado = sentencia.executeQuery(query);
            if(resultado.first()){
                int id = resultado.getInt(ID_ZONA);
                String nombreZona = resultado.getString(NOMBRE_ZONA);
                String descripcion = resultado.getString(DESCRIPCION);
                Zona zonaDomicilio = new Zona(id, nombreZona, descripcion);
                this.acceso.cerrarConexion(conexion);
                return zonaDomicilio;
            }else{
                return null;
            }            
        }catch(SQLException sqlex){
            return null;
        }
    }
    
    public ArrayList<Zona> listarZonas(){
        ArrayList<Zona> zonas = new ArrayList<Zona>();
        try{
            Statement sentencia = conexion.createStatement();
            sentencia = this.acceso.crearSentenciaBD(conexion);
            String query = "SELECT * FROM "+TABLA_ZONAS;
            ResultSet resultado = sentencia.executeQuery(query);
            while(resultado.next()){
                int idZona = resultado.getInt(ID_ZONA);
                String nombre = resultado.getString(NOMBRE_ZONA);
                String descripcion = resultado.getString(DESCRIPCION);
                Zona z = new Zona(idZona, nombre, descripcion);
                zonas.add(z);
            }
        }catch(SQLException sqlex){
            System.out.println("Error: "+sqlex.getCause());
        }
        return zonas;
    }
    
    public boolean registraZona(Zona zona){
        try{
            Statement sentencia = this.acceso.crearSentenciaBD(conexion);
            String query = "INSERT INTO "+TABLA_ZONAS+" ("+NOMBRE_ZONA+","+DESCRIPCION+") "
                    + "VALUES ('"+zona.getNombre()+"','"+zona.getDescripcion()+"');";
            sentencia.executeUpdate(query);
            return true;
        }catch(SQLException sqlex){
            return false;
        }
    }
    
    public boolean actualizaZona(Zona zona){
        try{
            Statement sentencia = this.acceso.crearSentenciaBD(conexion);
            String query = "UPDATE "+TABLA_ZONAS+" SET "+NOMBRE_ZONA+"='"+zona.getNombre()+"',"
                    + DESCRIPCION+"='"+zona.getDescripcion()+"' WHERE "+ID_ZONA+"='"+zona.getId()+"'";
            sentencia.executeUpdate(query);
            return true;            
        }catch(SQLException sqlex){
            return false;
        }
    }
}
